package com.zmx.job.admin.core.queue;

import com.zmx.job.admin.core.dto.JobDistributeInfo;

import java.util.LinkedList;

/**
 * @Description: 任务执行队列
 * @ClassName: JobQueue
 * @Author zhaomxr
 * @Date 2021-12-20 16:52
 */
public class JobQueue {
    /**
     * 缓存所有待执行队列
     */
    private static LinkedList<JobDistributeInfo> queue = new LinkedList<JobDistributeInfo>();

    /**
     * 将指定的元素插入队尾
     */
    public static void offer(JobDistributeInfo v) {
        queue.offer(v);
    }

    /**
     * 检索，但是不移除队列的头，如果此队列为空，则返回 null
     */
    public static JobDistributeInfo peek() {
        return queue.peek();
    }

    /**
     * 检索，但是不移除此队列的头
     * 此方法与 peek 方法的惟一不同是，如果此队列为空，它会抛出一个异常
     */
    public static JobDistributeInfo element() {
        return queue.element();
    }

    /**
     * 检索并移除此队列的头，如果队列为空，则返回 null
     */
    public static JobDistributeInfo poll() {
        return queue.poll();
    }

    /**
     * 检索并移除此队列的头
     * 此方法与 poll 方法的不同在于，如果此队列为空，它会抛出一个异常
     */
    public static JobDistributeInfo remove() {
        return queue.remove();
    }

    /**
     * 队列是否为空
     */
    public static boolean empty() {
        return queue.isEmpty();
    }
}
